/*
 * 版权所有 ( c ) 联想集团有限公司 2005-2009 保留所有权利。
 * 项目：	Lenovo Push Service
 * 文件名：	TestDegister.java
 * 版本:    1.0
 * 描述：	
 * 作者：	刘兵召
 * 日期：	May 7, 2010 
 * 修改历史：
 * 【时间】		【修改者】	【修改内容】
 */
package com.feng.demo.jakartacommons.digester;

import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;

public class TestDigester {

	public static void main(String args[]) {
		 LibraryDetailsConfiguration libraryDetails =
		 LibraryRuleSet.getLibraryDetailsConfig("E:/code/MyTest/src/com/feng/demo/jakartacommons/digester/film.xml");
		 libraryDetails.printLibraryDetails();
		
		//TestDigester digesterClient = new TestDigester();
		//digesterClient.testRulesXml("E:/code/MyTest/src/com/feng/demo/jakartacommons/digester/");
	}

	/**
	 * 将规则集保存为XML
	 * 在前面的例子中，你看到用Java编写的Digester规则集。但是，Digester最大的优点在于，这并不是将XML元素映射到行动的唯一定义模式。而且，你还可以用XML指定规则集，这使得非Java开发人员也有可能利用Digester的强大功能。
	 * 为说明这个问题，我们首先删除在前面例子中定义的LibraryRuleSet类，再用以XML编写的规则集来代替它，
	 */
	public void testRulesXml(String filePath) {
		try {
			// Create Digester using rules defined in movieRules.xml
			Digester digester = DigesterLoader.createDigester(this.getClass()
					.getClassLoader().getResource(filePath+"movieRules.xml"));
			// Parse movie.xml using the Digester to get an instance of Academy
			LibraryDetailsConfiguration libraryConfig = (LibraryDetailsConfiguration) digester
					.parse(this.getClass().getClassLoader()
							.getResourceAsStream(filePath+"film.xml"));
			libraryConfig.printLibraryDetails();
		} catch (Exception e) {

			System.out.println("Exception while parsing the data file : " + e);

			e.printStackTrace();

		}
	}
}
